/**
 * 
 */
package com.cait.dutyfree.dataaccess;

import java.util.ArrayList;
import java.util.List;

import com.cait.dutyfree.pojo.Airline;
import com.cait.dutyfree.pojo.Category;
import com.cait.dutyfree.pojo.Currency;
import com.cait.dutyfree.pojo.Product;
import com.cait.dutyfree.pojo.Stock;
import com.cait.dutyfree.pojo.SubCategory;
import com.cait.dutyfree.pojo.view.ProductDTO;

/**
 * @author Rasika Kaluwalgoda
 * 
 */
public interface InventoryServiceDAO {

	public String createCategory(Category category) throws Exception;

	public String updateCategory(Category category) throws Exception;

	public Category getCategory(int catId) throws Exception;

	public ArrayList<Category> getCategories() throws Exception;

	public boolean isAvailableCategoryCode(String code) throws Exception;

	public boolean isAvailableCategoryName(String name) throws Exception;

	public boolean isAvailableCategoryNameTwice(String name) throws Exception;

	public String createSubCategory(SubCategory category) throws Exception;

	public String updateSubCategory(SubCategory category) throws Exception;

	public SubCategory getSubCategory(int subCatId) throws Exception;

	public ArrayList<SubCategory> getSubCategories() throws Exception;

	public ArrayList<SubCategory> getSubCategoriesByCategory(int catId)
			throws Exception;

	public boolean isAvailableSubCategoryCode(String code) throws Exception;

	public boolean isAvailableSubCategoryName(String name) throws Exception;

	public boolean isAvailableSubCategoryNameTwice(String name)
			throws Exception;

	public String createProduct(Product product) throws Exception;

	public String updateProduct(Product product) throws Exception;

	public Product getProduct(int prdId) throws Exception;

	public Product getProduct(String prdCode) throws Exception;

	public ArrayList<Product> getProducts() throws Exception;

	public ArrayList<Product> getProducts(Category category) throws Exception;

	public ArrayList<Product> getProducts(SubCategory subCategory)
			throws Exception;

	public String updateStock(Stock stock) throws Exception;

	public Stock getStock(Product product) throws Exception;

	public ArrayList<Stock> getStocks() throws Exception;

	public boolean isAvailableProductCode(String code) throws Exception;

	public boolean isAvailableProductName(String name) throws Exception;

	public boolean isAvailableProductNameTwice(String name) throws Exception;

	public ArrayList<Airline> getAirlines() throws Exception;

	public Airline getAirline(int id) throws Exception;

	public ArrayList<Currency> getCurrencies() throws Exception;

	public Currency getCurrency(int id) throws Exception;

	public List<ProductDTO> getProductsDTOByCategoryIdAndAirLineId(
			Integer categoryId, Integer airlineId);

	public List<ProductDTO> getProductDTOBySubcategoryIdAndAirlineId(
			Integer subCategoryId, Integer airlineId);

}
